home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 24 / AMIGAplus Sonderheft 24 (2000)(Falke)(DE)[!].iso / PublicDomain / Anwendungen / MT-RechnungIII / Rexx / WWBestellung.inbrexx < prev    next >
Text File  |  1998-11-16  |  10KB  |  446 lines

  1. /*
  2. ** Druck-, Vorschau, Sichern der Bestellung mit Hilfe von WordWorth
  3. ** $VER: WWBestellung.inbrexx V1.03 (17.11.98)
  4. */
  5.  
  6. PARSE ARG ARexxPort;
  7.  
  8. ADDRESS VALUE ARexxPort;
  9. OPTIONS RESULTS;
  10.  
  11. WWVorlage    = "WWDokumente/Bestellung.ww";
  12. WWDokument    = "t:Bestellung.ww";
  13. WWPort        = "WORDWORTH."
  14.  
  15. LF                    = '0a'x;                            /* Zeilenvorschub                */
  16.  
  17. Gefunden = 0;
  18. DO i = 1 TO 20 WHILE(Gefunden = 0)
  19.     IF show(ports, (WWPort || i)) THEN
  20.         DO;
  21.             Gefunden = 1;
  22.             WWPort = WWPort || i;
  23.         END;
  24. END;
  25.  
  26. IF Gefunden = 0 THEN
  27.     DO;
  28.         ES_TITLE                = "Warnung";
  29.         ES_TEXTFORMAT        = "WordWorth ist nicht aktiv, bitte starten sie dieses" || LF || "und versuchen Sie es erneut";
  30.         ES_GADGETFORMAT    = "Abbrechen";
  31.         EASY_REQUEST;
  32.         EXIT;
  33.     END;
  34.  
  35. /* Original WW-Dokument nach t: kopieren, um ein versehentliches überschreiben */
  36. /* dieser Vorlage zu verhindern */
  37. GET_REXXPATH;
  38. WWVorlage        = MTR_RESULT || WWVorlage;
  39. ADDRESS COMMAND "copy" WWVorlage WWDokument;
  40.  
  41. /* Oberfläche sperren */
  42. LOCKGUI;
  43.  
  44. /* Art ermitteln: 0 = Drucken, 1 = Vorschau, 2 = Speichern */
  45. PRINTSTATE;
  46. Druckart = MTR_RESULT;
  47.  
  48. Ende_Kennzeichen = 'N';
  49.  
  50. /* Suchen der zu druckenden Daten */
  51. GET_PREFS;
  52. PRINTFIND;
  53.  
  54. /* Neues Dokument öffnen */
  55. ADDRESS VALUE WWPort;
  56. NEW;
  57. WWPort = RESULT;
  58.  
  59. DO WHILE( MTR_RESULT > 0 & Ende_Kennzeichen = 'N');
  60.  
  61.     CALL DatenAufbereiten;
  62.     SELECT;
  63.         WHEN Druckart = 0 THEN    /* Drucken    */
  64.             DO;
  65.                 ADDRESS VALUE WWPort;
  66.                 PRINT;
  67.                 ADDRESS VALUE ARexxPort;
  68.                 MTSCREENTOFRONT;
  69.             END;
  70.         WHEN Druckart = 1 THEN    /* Vorschau    */
  71.             ADDRESS VALUE ARexxPort;
  72.         WHEN Druckart = 2 THEN    /* Sichern    */
  73.             DO;
  74.                 ADDRESS VALUE WWPort;
  75.                 SAVEAS;
  76.                 ADDRESS VALUE ARexxPort;
  77.                 MTSCREENTOFRONT;
  78.             END;
  79.         OTHERWISE
  80.             DO;
  81.                 ES_TITLE                = "Warnung";
  82.                 ES_TEXTFORMAT        = "Druckart wird nicht unterstützt!";
  83.                 ES_GADGETFORMAT    = "Ok";
  84.                 EASY_REQUEST;
  85.                 Ende_Kennzeichen    = 'J';
  86.             END;
  87.     END;
  88.  
  89.     PRINTFIND;
  90. END;
  91.  
  92. /* WordWorth-Datei aus t: wieder entfernen */
  93. ADDRESS COMMAND "delete" WWDokument;
  94.  
  95. /* Oberfläche wieder entsperren */
  96. ADDRESS VALUE ARexxPort;
  97. FREEGUI;
  98.  
  99. EXIT;
  100.  
  101. DatenAufbereiten:
  102.  
  103.     ADDRESS VALUE ARexxPort;
  104.  
  105.     FORMAT_DATE_LONG date(s);
  106.     PRINTDATE = MTR_RESULT;
  107.  
  108.     FORMAT_DATE_LONG IB.DATE_ORDER;
  109.     DATE_ORDER = MTR_RESULT;
  110.  
  111.     w = IB.CURRENCY_USED;
  112.     IF w < 2 THEN
  113.         FORMAT_MONEY1 IB.TOTAL_M_ALL_CH.w;
  114.     ELSE
  115.         FORMAT_MONEY2 IB.TOTAL_M_ALL_CH.w;
  116.     ZW_Betrag    = MTR_RESULT;
  117.  
  118.     IF w < 2 THEN
  119.         FORMAT_MONEY1 IB.DISPATCH_COSTS.w;
  120.     ELSE
  121.         FORMAT_MONEY2 IB.DISPATCH_COSTS.w;
  122.     ZW_Versand    = MTR_RESULT;
  123.  
  124.     FORMAT_NUMBER IB.DISCOUNT_PERCENT PREFS.FRAC_DIGITS_PERCENT;
  125.     DISP    = MTR_RESULT;
  126.  
  127.     IF w < 2 THEN
  128.         FORMAT_MONEY1 IB.DISCOUNT.w;
  129.     ELSE
  130.         FORMAT_MONEY2 IB.DISCOUNT.w;
  131.     DIS    = MTR_RESULT;
  132.  
  133.     IF w < 2 THEN
  134.         FORMAT_MONEY1 IB.TOTAL_M_ALL_CH.0;
  135.     ELSE
  136.         FORMAT_MONEY2 IB.TOTAL_M_ALL_CH.2;
  137.     SUM_NET        = MTR_RESULT;
  138.  
  139.     IF w < 2 THEN
  140.         FORMAT_MONEY1 IB.TOTAL_M_ALL_CH.1;
  141.     ELSE
  142.         FORMAT_MONEY2 IB.TOTAL_M_ALL_CH.3;
  143.     SUM_GROSS    = MTR_RESULT;
  144.  
  145.  
  146.     ADDRESS VALUE WWPort;
  147.     OPEN FILENAME WWDokument FORCE;
  148.  
  149.     DruckString    = IB.OFFICE.ADDRESS.ADDRESS.2 || LF;
  150.     i = INDEX( DruckString, LF);
  151.     IF i > 0 THEN
  152.         DO;
  153.             DruckTeil    = LEFT( DruckString, (i - 1) );
  154.             DruckString = SUBSTR(DruckString, (i + 1) );
  155.             i = INDEX( DruckString, LF);
  156.         END;
  157.     ELSE
  158.         DruckTeil    = DruckString;
  159.     FINDCHANGE FIND "<OFFICE.ADDRESS.ADDRESS.2>" CHANGE DruckTeil;
  160.     DO WHILE( i > 0 );
  161.         DruckTeil    = LEFT( DruckString, (i - 1) );
  162.         DruckString = SUBSTR(DruckString, (i + 1) );
  163.         LINE 1;
  164.         TEXT DruckTeil;
  165.         i = INDEX( DruckString, LF);
  166.     END;
  167.  
  168.     POSITION SOF;
  169.     FINDCHANGE FIND "<PRINTDATE>" CHANGE PRINTDATE;
  170.     /* Leider wird bei längeren Texten der hintere Teil verschluckt, also nochmal ausgeben */
  171.     TEXT PRINTDATE;
  172.  
  173.     POSITION SOF;
  174.     FINDCHANGE FIND "<OFFICE.ADDRESS.ADDRESS.0>" CHANGE IB.OFFICE.ADDRESS.ADDRESS.0;
  175.     /* Leider wird bei längeren Texten der hintere Teil verschluckt, also nochmal ausgeben */
  176.     TEXT IB.OFFICE.ADDRESS.ADDRESS.0;
  177.  
  178.     POSITION SOF;
  179.     DruckString    = IB.SUPPLIER.ADDRESS.ADDRESS.2 || LF;
  180.     i = INDEX( DruckString, LF);
  181.     IF i > 0 THEN
  182.         DO;
  183.             DruckTeil    = LEFT( DruckString, (i - 1) );
  184.             DruckString = SUBSTR(DruckString, (i + 1) );
  185.             i = INDEX( DruckString, LF);
  186.         END;
  187.     ELSE
  188.         DruckTeil    = DruckString;
  189.     FINDCHANGE FIND "<SUPPLIER.ADDRESS.ADDRESS.2>" CHANGE DruckTeil;
  190.     DO WHILE( i > 0 );
  191.         DruckTeil    = LEFT( DruckString, (i - 1) );
  192.         DruckString = SUBSTR(DruckString, (i + 1) );
  193.         LINE 1;
  194.         TEXT DruckTeil;
  195.         i = INDEX( DruckString, LF);
  196.     END;
  197.  
  198.     FINDCHANGE FIND "<IB.CLIENT_CODE>" CHANGE IB.SUPPLIER.CLIENT_CODE;
  199.     FINDCHANGE FIND "<IB.DATE_ORDER>" CHANGE DATE_ORDER;
  200.     /* Leider wird bei längeren Texten der hintere Teil verschluckt, also nochmal ausgeben */
  201.     TEXT DATE_ORDER;
  202.     FINDCHANGE FIND "<IB.EMPLOYEE.SUR_PRENAME>" CHANGE (IB.EMPLOYEE.ADDRESS.PRENAME IB.EMPLOYEE.ADDRESS.SURNAME);
  203.  
  204.     FIND "<ARTICLE>";
  205.     BACKSPACE;
  206.  
  207.     DO i = 1 to IB.COUNT_ARTICLE;
  208.  
  209.         ADDRESS VALUE ARexxPort;
  210.  
  211.         ZW_ArtikelNr    = IB.i.POS_ARTICLE_NUMBER_FORMATED;
  212.  
  213.         FORMAT_NUMBER (IB.i.POS_QUANTITY / IB.i.POS_PRICE_UNIT) PREFS.FRAC_DIGITS;
  214.         ZW_Anzahl        = MTR_RESULT;
  215.  
  216.         NAME_OF_QUANTITY_UNIT IB.i.ARTICLE.QUANTITY_UNIT;
  217.         ZW_Einheit        = MTR_RESULT;
  218.  
  219.         j = IB.i.POS_VALUE;
  220.         FORMAT_NUMBER IB.VALUE_PERCENT.j PREFS.FRAC_DIGITS_PERCENT;
  221.         ZW_MWSt            = MTR_RESULT;
  222.  
  223.         ZW_Bezeichnung = IB.i.ARTICLE.DESCRIPTION;
  224.  
  225.         IF w < 2 THEN
  226.             FORMAT_MONEY1 IB.i.POS_SINGLE_PRICE.w;
  227.         ELSE
  228.             FORMAT_MONEY2 IB.i.POS_SINGLE_PRICE.w;
  229.         ZW_EinzelPreis    = MTR_RESULT;
  230.         
  231.         ADDRESS VALUE WWPort;
  232.  
  233.         TEXT ZW_ArtikelNr || "    " || ZW_Anzahl || "    " || ZW_Bezeichnung || "    " || ZW_Einheit || "    " || ZW_MWSt || "    " || ZW_EinzelPreis;
  234.  
  235.         IF IB.i.ARTICLE.ADDITIONAL_TEXT > "" THEN
  236.             DO;
  237.                 DruckString    = IB.i.ARTICLE.ADDITIONAL_TEXT || LF;
  238.                 i2 = INDEX( DruckString, LF);
  239.                 DO WHILE( i2 > 0 );
  240.                     DruckTeil    = LEFT( DruckString, (i2 - 1) );
  241.                     DruckString = SUBSTR(DruckString, (i2 + 1) );
  242.                     NEWPARAGRAPH;
  243.                     TEXT "        " || DruckTeil || "            ";
  244.                     i2 = INDEX( DruckString, LF);
  245.                 END;
  246.             END;
  247.  
  248.         IF IB.i.POS_REMARK > "" THEN
  249.             DO;
  250.                 DruckString    = IB.i.POS_REMARK || LF;
  251.                 i2 = INDEX( DruckString, LF);
  252.                 DO WHILE( i2 > 0 );
  253.                     DruckTeil    = LEFT( DruckString, (i2 - 1) );
  254.                     DruckString = SUBSTR(DruckString, (i2 + 1) );
  255.                     NEWPARAGRAPH;
  256.                     TEXT "        " || DruckTeil || "            ";
  257.                     i2 = INDEX( DruckString, LF);
  258.                 END;
  259.             END;
  260.  
  261.         DO i2 = 0 TO 2;
  262.             IF IB.i.POS_ADD_RED_USED.i2 > 0 THEN
  263.                 DO;
  264.                     ADDRESS VALUE ARexxPort;
  265.  
  266.                     j2 = IB.i.POS_ADD_RED_USED.i2 - 1;
  267.                     IF IB.i.POS_ADD_RED_TYPE.i2 = 0 | IB.i.POS_ADD_RED_TYPE.i2 = 5 THEN
  268.                         DO;
  269.                             FORMAT_NUMBER IB.i.POS_ADD_RED_VALUE.i2.w PREFS.FRAC_DIGITS_PERCENT;
  270.                         END;
  271.                     ELSE
  272.                         DO;
  273.                             IF w < 2 THEN
  274.                                 FORMAT_MONEY1 IB.i.POS_ADD_RED_VALUE.i2.w;
  275.                             ELSE
  276.                                 FORMAT_MONEY2 IB.i.POS_ADD_RED_VALUE.i2.w;
  277.                         END;
  278.                     ZW_EinzelZuAb    = RIGHT(MTR_RESULT, 15);
  279.  
  280.                     IF w < 2 THEN
  281.                         FORMAT_MONEY1 IB.i.POS_ADD_RED_VALUE_POS.i2.w;
  282.                     ELSE
  283.                         FORMAT_MONEY2 IB.i.POS_ADD_RED_VALUE_POS.i2.w;
  284.                     ZW_PosZuAb        = RIGHT(MTR_RESULT, 15);
  285.  
  286.                     ADDRESS VALUE WWPort;
  287.                     NEWPARAGRAPH;
  288.                     TEXT "        " || PREFS.ADD_RED_TEXT.j2 || "        " || ZW_EinzelZuAb || "    " || ZW_PosZuAb;
  289.                 END;
  290.         END;
  291.  
  292.         ADDRESS VALUE ARexxPort;
  293.  
  294.         IF w < 2 THEN
  295.             FORMAT_MONEY1 IB.i.POS_SUM_M_ALL.w;
  296.         ELSE
  297.             FORMAT_MONEY2 IB.i.POS_SUM_M_ALL.w;
  298.         ZW_PosPreis        = MTR_RESULT;
  299.  
  300.         ADDRESS VALUE WWPort;
  301.         TEXT "    " || ZW_PosPreis;
  302.         NEWPARAGRAPH;
  303.     END;
  304.  
  305.     FIND "<DESCRIPTION>";
  306.     j2 = 0;
  307.     IF IB.REMARK > "" THEN
  308.         DO;
  309.             DruckString    = IB.REMARK || LF;
  310.             i2 = INDEX( DruckString, LF);
  311.             DO WHILE( i2 > 0 );
  312.                 DruckTeil    = LEFT( DruckString, (i2 - 1) );
  313.                 DruckString = SUBSTR(DruckString, (i2 + 1) );
  314.                 IF j2 > 0 THEN
  315.                     NEWPARAGRAPH;
  316.                 TEXT DruckTeil;
  317.                 i2 = INDEX( DruckString, LF);
  318.                 j2 = j2 + 1;
  319.             END;
  320.         END;
  321.     ELSE
  322.         DO;
  323.             POSITION SOL;
  324.             SHIFTDOWN;
  325.             LINE 2;
  326.             SHIFTUP;
  327.             BACKSPACE;
  328.         END;
  329.  
  330.  
  331.     FINDCHANGE FIND "<DISPATCH>" CHANGE ZW_Versand;
  332.  
  333.     FIND "<VALUE>";
  334.     POSITION SOL;
  335.     SHIFTDOWN;
  336.     LINE 1;
  337.     SHIFTUP;
  338.     COPY;
  339.  
  340.     j = 0;
  341.     DO i = 0 to 9;
  342.         IF IB.VALUE_M_ALL_CH.i.0 > 0 THEN
  343.             DO;
  344.                 ADDRESS VALUE ARexxPort;
  345.                 FORMAT_NUMBER IB.VALUE_PERCENT.i PREFS.FRAC_DIGITS_PERCENT;
  346.                 ZW_MWStProzentsatz    = MTR_RESULT;
  347.                 IF w < 2 THEN
  348.                     FORMAT_MONEY1 IB.VALUE_M_ALL_CH.i.0;
  349.                 ELSE
  350.                     FORMAT_MONEY2 IB.VALUE_M_ALL_CH.i.1;
  351.                 ZW_MWStBet